<?php
// src/Pyaf/GymBundle/Controller/ProfesorController.php
namespace Pyaf\GymBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Pyaf\GymBundle\Entity\Profesor;

/**
 * Description of ProfesorController
 *
 * @author Toshiba P755-S5272
 */
class ProfesorController extends Controller{
    private $profesorDoctrine;
    
    public function setProfesorDoctrine() {
        $this->profesorDoctrine = $this->getDoctrine()->getEntityManager();        
    }

    public function listAction() {
        $this->setProfesorDoctrine();
        $profesores = $this->profesorDoctrine->getRepository('PyafGymBundle:Profesor')->findAllOrderByNombre();
        
        return $this->render('PyafGymBundle:Profesor:list.html.twig', array('profesores' => $profesores));
    }
    
    public function showAction($id){        
        $profesor = new Profesor(); 
        $profesor = $this->getDoctrine()->getEntityManager()
                         ->getRepository('PyafGymBundle:Profesor')
                         ->findProfesor($id);
        
        $profesor->getPersona()
                ->setEdad($this->calculaedad(
                        $profesor->getPersona()->getFechaNacimiento()->format('Y-m-d')
                        )
                    );
        
        return $this->render('PyafGymBundle:Profesor:info.html.twig', array('profesor' => $profesor));
    }
    
    function calculaedad($fechanacimiento){
        
        list($ano,$mes,$dia) = explode("-", $fechanacimiento);
        
        $ano_diferencia = date("Y") - $ano;
        $mes_diferencia = date("m") - $mes;
        $dia_diferencia = date("d") - $dia;
        if ($dia_diferencia < 0 || $mes_diferencia < 0)
            $ano_diferencia--;
        
        return $ano_diferencia;
    }
        
    function accountAction($id){
        $em = $this->getDoctrine()->getEntityManager();
        $profesor = $em->getRepository('PyafGymBundle:Profesor')->find($id);
        
        return $this->render('PyafGymBundle:Profesor:account.html.twig', array('profesor' => $profesor));
    }
    
    function changePassAction($id){
        $em = $this->getDoctrine()->getEntityManager();
        $peticion = $this->getRequest();
        
        $passViejo = $peticion->request->get('passViejo');
        $passNuevo = $peticion->request->get('passNuevo');
           
        $profesor = new Profesor();
        $profesor = $em->getRepository('PyafGymBundle:Profesor')->find($id);
                
        $factory = $this->get('security.encoder_factory');
        $encoder = $factory->getEncoder($profesor);
        $password = $encoder->encodePassword($passViejo, $profesor->getSalt());
        
        if($password == $profesor->getPassword()){
            try {
                $factory = $this->get('security.encoder_factory');
                $encoder = $factory->getEncoder($profesor);
                $newPassword = $encoder->encodePassword($passNuevo, $profesor->getSalt());
                $profesor->setPassword($newPassword);
                $em->persist($profesor);
                $em->flush();

                $this->get('session')
                    ->setFlash(
                                   'alertaConfiguracionPassSuccess',
                                   'La contraseña ha sido modificada correctamente!'
                               );
            } catch (Exception $exc) {
                $this->get('session')
                ->setFlash(
                               'alertaConfiguracionPassError',
                               'Error la contraseña no pudo ser modificada, intente nuevamente!'
                           );
            }

        } else {
            $this->get('session')
                ->setFlash(
                               'alertaConfiguracionPassError',
                               'Error la contraseña actual no es la correcta!'
                           );
        }
        return $this->render('PyafGymBundle:Profesor:account.html.twig', array('profesor' => $profesor));
    }
}

?>
